#!/bin/bash
# @@@ START COPYRIGHT @@@
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#
# @@@ END COPYRIGHT @@@

if [ $# -lt 2 ]; then
	echo "goshelln <cli> <srv>"
	exit 1
fi
xclient=$1
xserver=$2
shift
shift
type=

# setup
. ./gosetup

maxcp=1
maxsp=1
if [ "$1" = "-maxcp" ]; then
	shift
	maxcp=$1
	shift
fi
if [ "$1" = "-maxsp" ]; then
	shift
	maxsp=$1
	shift
fi
maxes="-maxcp $maxcp -maxsp $maxsp"

echo "********* TEST `date` $xclient/$xserver *********"
tcheck -setup
. ./goshellsetup
echo "node" >> $TMP
echo "! Start the monitor processes across the cluster" >> $TMP
echo "startup" >> $TMP
echo "! Start the test server" >> $TMP
echo "exec {nowait,name \$SRV} $xserver -server -inst 0 $maxes $*" >> $TMP
n=1
while [[ $n -lt $maxsp ]]; do
echo "exec {nowait,name \$s$n} $xserver -server -inst $n $maxes $*" >> $TMP
n=`expr $n + 1`
done
echo "! Display process status of our processes" >> $TMP
echo "delay 1" >> $TMP
echo "ps" >> $TMP
echo "! Start the client process" >> $TMP
n=0
while [[ $n -lt $maxcp ]]; do
if [ $n -eq 0 ]; then
echo "exec {$nid0 type TSE, nowait,name \$c$n} $xclient -client -inst $n -name \$c$n $maxes $*" >> $TMP
else
echo "exec {type TSE, nowait,name \$c$n} $xclient -client -inst $n -name \$c$n $maxes $*" >> $TMP
fi
n=`expr $n + 1`
done
echo "delay 5" >> $TMP
echo "event {TSE} 1" >> $TMP
echo "! Display process status to see new processes" >> $TMP
echo "ps" >> $TMP
echo "! Wait for our processes to stop, then stop the monitor processes and exit." >> $TMP
echo "wait \$SRV" >> $TMP
n=1
while [[ $n -lt $maxsp ]]; do
echo "wait \$s$n" >> $TMP
n=`expr $n + 1`
done
n=0
while [[ $n -lt $maxcp ]]; do
echo "wait \$c$n" >> $TMP
n=`expr $n + 1`
done
echo "shutdown" >> $TMP
echo "exit" >> $TMP
. ./goshellfilter
tcheck $xclient
